At 07:52 +0300 on 26/07/1999, tjk@tksoft.com wrote:
> If I recall the original question correctly, the
> "only" real solution would seem to be to define
> a function to search the appropriate fields.
Yes. The original question had a conceptual problem. It wanted to
abbreviate the expression without the name of the table. This was
nonsensical - you can't ask whether id > 3. You can ask whether person.id >
3. Just "id" could be anything in the world. Asking a database to do that
is like asking a person to play a flute in vacuum.
Another problem was that it implied returning a set of rows. This is not
well supported by postgres - and that's a known limitation.
The best thing that can be done at the moment is to have a function that
accepts the strings as parameters and returns a boolean:
CREATE FUNCTION match_three ( text, text, text, text ) RETURNS bool AS ' SELECT (( $1 ~ $4 ) OR ( $2 ~ $4 ) OR ($3 ~
$4))
' LANGUAGE 'sql';
Then it can be used as:
SELECT * FROM table1
WHERE match_three( x1, x2, x3, 'foo' );
Herouth
--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma